package gui;

import java.awt.Color;

import org.uqbar.arena.actions.MessageSend;
import org.uqbar.arena.layout.ColumnLayout;
import org.uqbar.arena.layout.HorizontalLayout;
import org.uqbar.arena.layout.VerticalLayout;
import org.uqbar.arena.widgets.Button;
import org.uqbar.arena.widgets.Label;
import org.uqbar.arena.widgets.Panel;
import org.uqbar.arena.windows.Window;
import org.uqbar.arena.windows.WindowOwner;

import aOrganizar.Asiento;
import aOrganizar.Reserva;
import aOrganizar.Usuario;


@SuppressWarnings("serial")
public class MensajeReservaWindow extends Window<MensajeReserva>
{
	private Asiento asiento;
	private Usuario usuario;
	private boolean sobrereserva;	
	
	public MensajeReservaWindow(WindowOwner parent,Asiento asiento,Usuario usuario,boolean Sobrereserva)
	{
		super(parent, new MensajeReserva());
		
		//Fijo los atributos a mostrarse en la ventana.
		this.asiento=asiento;
		this.usuario=usuario;
		this.sobrereserva=Sobrereserva;
		
		//Armo la reserva en el modelo.
		this.getModelObject().setReserva(new Reserva(this.asiento,this.usuario,this.sobrereserva));		
	}

	protected void agregar_titulo_usuario(Panel panel)
	{
		Panel p = new Panel(panel);
		p.setLayout(new VerticalLayout());
		
		this.setTitle("Aterrizar.com");
		
		//Decide si mostrar un solo titulo o dos cdo se hace una sobre reserva.
		if (!this.sobrereserva)
		{
			String titulo = "El asiento "+this.asiento.getNumeroDeAsiento()+" ha sido reservado existosamente";
			new Label(p).setText(titulo).setForeground(Color.black);
		}
		else
		{
			String titulo = "El asiento "+this.asiento.getNumeroDeAsiento()+" ya se encuentra reservado";
			new Label(p).setText(titulo).setForeground(Color.black);

			String titulo2 = "¿Que desea hacer?";
			new Label(p).setText(titulo2).setForeground(Color.black);
		}
	}
	
	public void reservar()
	{
		//Hago la reserva atravez del controlador.
		boolean resu = this.getModelObject().Reservar();
	
		//Cierro la ventana.
		this.close();
		
		//Si pudo realizarse la reserva, muestro el mensaje de reserva realizada.
		if (resu)
		{			
			this.openDialog(new MensajeReservaWindow(this,asiento,this.usuario,false));
		}
	}
	
	protected void agregar_botones(Panel panel)
	{
		Panel actionsPanel = new Panel(panel);
		actionsPanel.setLayout(new HorizontalLayout());
	
		//Si hay q hacer una sobre reserva, agrego un boton mas, para reservar.
		if (this.sobrereserva)
		{
			new Button(actionsPanel).setCaption("Sobrereservar").onClick(new MessageSend(this, "reservar"));	
		}

		new Button(actionsPanel).setCaption("Seguir Buscando").onClick(new MessageSend(this, "close"));
	}

	@Override
	public void createContents(Panel mainPanel)
	{
		Panel FormPanel = new Panel(mainPanel);
		FormPanel.setLayout(new ColumnLayout(2));

		agregar_titulo_usuario(mainPanel);
		
		agregar_botones(mainPanel);
	}
	
	protected void openDialog(Window<?> dialog) {
		dialog.open();
	}
	

}
